home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3 (Developer)…68k, x86, SPARC, PA-RISC] / NeXTSTEP 3.3 Dev Intel.iso / NextDeveloper / Source / GNU / cctools / as / struc-symbol.h < prev    next >
Text File  |  1993-10-07  |  3KB  |  70 lines

  1. /* struct_symbol.h - Internal symbol structure
  2.    Copyright (C) 1987 Free Software Foundation, Inc.
  3.  
  4. This file is part of GAS, the GNU Assembler.
  5.  
  6. GAS is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 1, or (at your option)
  9. any later version.
  10.  
  11. GAS is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GAS; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. #ifdef NeXT
  21. #import <mach-o/nlist.h>
  22. #else /* !defined(NeXT) */
  23. #ifndef        VMS
  24. #include "a.out.h"        /* Needed to define struct nlist. Sigh. */
  25. #else
  26. #include "a_out.h"
  27. #endif
  28. #endif /* defined(NeXT) */
  29.  
  30. struct symbol            /* our version of an nlist node */
  31. {
  32.   struct nlist    sy_nlist;    /* what we write in .o file (if permitted) */
  33.   long unsigned sy_name_offset;    /* 1-origin position of sy_name in symbols */
  34.                 /* part of object file. */
  35.                 /* 0 for (nameless) .stabd symbols. */
  36.                 /* Not used until write_object() time. */
  37.   long int    sy_number;    /* 24 bit symbol number. */
  38.                 /* Symbol numbers start at 0 and are */
  39.                 /* unsigned. */
  40.   struct symbol *sy_next;    /* forward chain, or NULL */
  41.   struct frag   *sy_frag;    /* NULL or -> frag this symbol attaches to. */
  42.   struct symbol *sy_forward;    /* value is really that of this other symbol */
  43. };
  44.  
  45. typedef struct symbol symbolS;
  46.  
  47. #define sy_name        sy_nlist .n_un. n_name
  48.                 /* Name field always points to a string. */
  49.                 /* 0 means .stabd-like anonymous symbol. */
  50. #define sy_type     sy_nlist.    n_type
  51. #ifdef NeXT
  52. #define sy_other    sy_nlist.    n_sect
  53. #else
  54. #define sy_other    sy_nlist.    n_other
  55. #endif
  56. #define sy_desc        sy_nlist.    n_desc
  57. #define sy_value    sy_nlist.    n_value
  58.                 /* Value of symbol is this value + object */
  59.                 /* file address of sy_frag. */
  60. typedef unsigned valueT;    /* The type of n_value. Helps casting. */
  61.  
  62. struct indirect_symbol {
  63.   char             *isy_name;    /* name of the indirect */
  64.   struct frag        *isy_frag;    /* frag this indirect attaches to */
  65.   unsigned long          isy_offset;    /* offset into frag this attaches to */
  66.   struct symbol         *isy_symbol;    /* symbol for the indirect */
  67.   struct indirect_symbol *isy_next;    /* forward chain, or NULL */
  68. };
  69. typedef struct indirect_symbol isymbolS;
  70.